package com.qf.common.core.utils;

import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.Calendar;
import java.util.Date;

/**
 * ---今日份---
 *
 * @Author Fzl
 * @Date 2024/11/9
 * @Desc 力未尽，不言降
 */
public class DateUtils {

    /**
     *  针对指定日期进行格式化
     * @param date
     * @param pattern
     * @return
     */
    public static String formatLocalDate(LocalDate date,String pattern){

        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(pattern);

        return date.format(dateTimeFormatter);

    }


    // date传入一个当前日期 pattern 返回的是什么格式的日期如yyMM或yy-MM
    public static String formatDate(Date date,String pattern){

        // 创建一个 SimpleDateFormat 对象，使用指定的日期格式模式 pattern
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);

        return sdf.format(date);

    }

    public static Long monthSecond(){ //获取当前月多少秒
        // 获取当前日期
        LocalDate now = LocalDate.now();

        // 当前日期加一个月
        LocalDate oneMonthLater = now.plusMonths(1);

        // 计算当前日期到一个月后之间的秒数
        long GetsTheCurrentMonthSecond = ChronoUnit.SECONDS.between(now.atStartOfDay(), oneMonthLater.atStartOfDay());

        return GetsTheCurrentMonthSecond;
    }

    public static Long getDaySecond() { //获取当天剩余的秒数
        // 获取当前时间
        LocalDateTime now = LocalDateTime.now();

        // 获取今天的结束时间（23:59:59）
        LocalDateTime endOfDay = LocalDateTime.of(LocalDate.now(), LocalTime.MAX);

        // 计算从现在到今天结束的秒数
        long secondsRemainingToday = ChronoUnit.SECONDS.between(now, endOfDay);

        return secondsRemainingToday;
    }


    public static Date yesterday() { // 获取昨天日期
        Calendar cal = Calendar.getInstance();
        // 日期的天 加减一个指定值
        cal.add(Calendar.DAY_OF_MONTH, -1);
        return cal.getTime();
    }


    public static String today(){ //获取今天日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String format = sdf.format(new Date());

        return format;
    }
}
